#ifndef __BITREEN_H__
#define __BITREE_H__

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define null NULL
#define true 0
#define false !true
#define bool int

/* 定义二叉树的节点类型 */
typedef int TElemType;

/* 二叉链表表示法的结构模型 */
typedef struct BiTNode
{
    TElemType data;         /* 节点数据 */
    struct BiTNode *lchild; /* 左孩子 */
    struct BiTNode *rchild; /* 右孩子 */
} BiTNode;

/* 接口申明 */
typedef struct func_BiTree
{
    BiTNode *(*create)(void);
    void (*prevOrder)(BiTNode *);
    void (*inOrder)(BiTNode *);
    void (*postOrder)(BiTNode *);
    void (*levelOrder)(BiTNode *);
    int (*leafNum)(BiTNode *root, int *num);
    int (*depth)(BiTNode *root);
    BiTNode *(*copy)(BiTNode *tree);
    void (*release)(BiTNode *);
    int (*degree)(BiTNode *);

} func_BiTree;

#endif
